草庐IT

Java BufferedImage 内存消耗

全部标签

java - 这里有没有人有他们喜欢用于他们的 java web 应用程序的最喜欢的内存分析/内存泄漏工具?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我正在寻找一个很好的工具来分析java网络应用程序。如果可能的话,我想获得性能信息和内存使用情况。有什么建议吗?

java - 为什么在 Java 中使用堆内存

我们为什么要使用堆内存,我们可以使用栈内存吗?已编辑看完答案我又想到了一个问题1)除了堆和栈之外,还有其他内存类型吗?已编辑我遇到了字符串池,那是与堆或堆栈相关的内存吗? 最佳答案 好吧,如果您想使用对象,您必须使用堆。对象本质上是堆栈(或其他对象内部)指向堆中内存块的指针。与C++不同的是,您可以将对象放在堆栈或堆中,Java的处理方式不同。即使在C++中,将堆用于必须比创建它们的函数更长寿的对象也是一个好主意。您可能可以避免它,但您可能会发现自己遇到所有的性能问题复制构造函数。关于您的编辑:Isthereanyotherkind

堆栈与堆上的 Java 内存分配

问这个问题我觉得自己是个新手——但为什么当我将下面的Set传递到我的方法中并将它指向一个新的HashSet时,它仍然以EmptySet的形式出现?是不是因为局部变量分配在堆栈上,所以当我退出方法时我的new被吹走了?我如何实现等效的功能?importjava.util.HashSet;importjava.util.Set;publicclassTestMethods{publicstaticvoidmain(finalString[]args){finalSetfoo=java.util.Collections.emptySet();test(foo);}publicstaticvo

java - 创建类的新实例还是分配内存空间?

更新publicFishmate(Fishother){if(this.health>0&&other.health>0&&this.closeEnough(other)){intbabySize=(((this.size+other.size)/2));intbabyHealth=(((this.health+other.health)/2));doublebabyX=(((this.x+other.x)/2.0));doublebabyY=(((this.y+other.y)/2.0));newFish(babySize,babyHealth,babyX,babyY);}retur

java - 衡量 Java 程序内存使用情况的最佳方法?

我目前正在使用VisualVM,但我遇到的问题是我无法保存它生成的图表。我需要报告有关其内存使用情况和运行时间的一些数据,尽管使用System.nanoTime()很容易获得运行时间。我也尝试过NetBeans探查器,但这不是我想要的,因为我不是在寻找会减慢速度的特定部件或任何其他东西,所以这会有点过分。它最大的问题是它占用了太多的处理时间。也不允许我像VisualVM那样轻松地捕获/传输数据,至少据我所知是这样。理想情况下,最好的方法是进行一些方法调用,因为这样我就可以更轻松地获取信息,但实际上可以让我保存图形的VisualVM之类的任何东西都可以。与NetBeans分析器相比,Vi

Java NIO - 内存映射文件

我最近遇到了这个article它很好地介绍了内存映射文件以及如何在两个进程之间共享它。以下是读取文件的进程的代码:importjava.io.File;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.RandomAccessFile;importjava.nio.MappedByteBuffer;importjava.nio.channels.FileChannel;publicclassMemoryMapReader{/***@paramargs*@throwsIOExceptio

java - 如何增加分配给 GlassFish 的内存?

我想增加我的GlassFish实例的内存分配。谁能帮帮我。您的回答可能是通过管理控制台或命令行,我不介意。 最佳答案 找到您正在使用的文件domain.xml,即/usr/local/glassfish-4.1/glassfish/domains/domain1/config/domain.xml(如果使用Linux,您可以使用“locatedomain.xml”(如果您安装了mlocate并执行“sudoupdatedb”)。如果您使用其他操作系统,请手动找到您的glassfish目录和域文件。在该文件和其他文件中找到(Xmx)的

java - 能否将 JDBC 驱动程序配置为使用共享内存协议(protocol)

我在一个非常受限的环境中工作,我正在尝试配置一个Java应用程序以连接到我本地运行的SQLServer实例。共享内存、TCP/IP和命名管道客户端协议(protocol)已启用,但只有共享内存协议(protocol)作为我的SQLServer实例“网络配置”的一部分启用。因此,每当我尝试建立连接时,我都会收到错误消息,“连接被拒绝:连接。验证连接属性,检查SQLServer实例是否正在主机上运行并在端口上接受TCP/IP连接,并且没有防火墙阻止到端口的TCP连接。”我很确定这是因为实例上未启用TCP/IP。那么有没有一种方法可以在JDBCURL中指定应该使用共享内存还是不可能?

java - Finalized 拥有大量内存 4 g 中的 2.5 gig

我已经阅读了很多关于终结器如何工作的文章。这是我的理解:如果一个类实现了finalize方法,Jvm将创建一个Finalizer实例作为该对象的看门狗。当GC运行时,它会标记要处理的对象并将它们添加到引用队列中,然后终结器线程将从队列中挑选这些对象并执行它们的终结方法。我的问题是:如何从堆转储中找到因某种原因未完成finalize方法并开始堆积引用队列的对象?引用队列是否按特定顺序排列? 最佳答案 这可能不是您正在寻找的答案,但您是否考虑过使用PhantomReference而不是覆盖finalize()?这是一个article那就

java - 清除后 Eclipse 不释放控制台(日志)内存

我的Eclipse占用空间从500MB稳步增加到1GB以上,我没有做任何特别的事情——只是运行一些日志繁重的程序。执行手动GC、关闭和重新打开项目根本没有帮助,一旦超过1GB,它就会留在那里。我运行了jvisualvm并从堆转储中发现数百兆字节是char[]表示日志输出。我养成了关闭所有停止进程的控制台的习惯,所以不是那样的。控制台缓冲区设置为1MB(字符)。我关闭了控制台View并再次打开它。我可以粘贴我的特定eclipse.ini,但我尝试了不同的GC和内存设置、不同的JVM、不同的Eclipse版本-行为仍然相同。对我来说,日志似乎在某个地方被引用卡住了,永远不会被释放。还有其他